package com.learn.im.domain;

import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.File;
import java.util.Date;

/**
 * websocket文件对象
 * @author Emp
 * @version :    1.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class FileMessage {
    // 源文件名
    private String originName;
    // 文件大小
    private Long size;
    // 保存到服务器的路径
    private String filePath;
    // 保存的真实文件名
    private String realName;
    // 关联的消息id
    private Integer chatId;
    // 分片大小
    private Integer chunk;
    // 接收方接收方式
    private Integer type;

    // 上传的文件
    private File file;
    // 关联的消息
    private Chat chat;

    /**
     * 将文件对象转换为消息附件对象
     */
    public ChatAttach convert() {
        ChatAttach attach = new ChatAttach();
        attach.setFilePath(this.filePath);
        attach.setOriginName(this.originName);
        attach.setRealName(this.realName);
        attach.setSize(this.size.doubleValue());
        attach.setCreateTime(new Date());
        attach.setChatId(this.chat.getId());
        return attach;
    }

    /**
     * 解析消息中的content作为文件对象
     */
    public static FileMessage parse(Chat chat){
        FileMessage fileMessage = JSON.parseObject(chat.getContent(), FileMessage.class);
        fileMessage.setChat(chat);
        return fileMessage;
    }
}
